#ifndef CEditMonH
#define CEditMonH

#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include <StdCtrls.hpp>
#include "CtrlStd.h"
#include "CEdit.h"
#include "EIC.h"

namespace Ceditmon
{
//---------------------------------------------------------------------------
class PACKAGE_CTRLSTD CEditMontant : public CCustomEdit
{
 private:
  bool m_bNegatif; // TRUE si le control accepte de saisir des montants négatifs


 private:
  void           __fastcall SetMontant( const Currency& curMontant);
  const Currency __fastcall GetMontant( void);
  void           __fastcall OnIllegalChar( CCustomEdit* pedSender, Word& cIllegalCharCode, bool& bAccept);
  
 // Propriétés non publiées //
 public:
  // Nouvelles propriétés
  __property Currency Montant = { read = GetMontant, write = SetMontant};

  // Propriétés héritées
  __property Text = { nodefault, stored = false}; // Pour la copie de valeurs nulles

 // Propriétés publiées //
 __published:
  __property Alignment = { default = taRightJustify};
  __property bool Negatif = { read = m_bNegatif, write = m_bNegatif, default = false};
  __property Width     = { default = 113};     // Permet d'afficher en gras "9 999 999,99"

  // Propriétés héritées (sauf CharCase, Filtres, Ime*, MaxLength, OEMConvert, PasswordChar)
  __property AutoSelect;
  __property Anchors;
  __property AutoSize;
  __property BorderStyle;
  __property Color;
  __property Ctl3D;
  __property DragCursor;
  __property DragMode;
  __property Enabled;
  __property Filtres;
  __property Font;
  __property HideSelection;
  __property Libelle;
  __property LibelleFont;
  __property ParentCtl3D;
  __property ParentFont;
  __property ParentShowHint;
  __property PopupMenu;
  __property ReadOnly;
  __property ShowHint;
  __property SizeEspace;
  __property TabOrder;
  __property TabStop;
  __property Visible;

 // Evénements publiés //
 __published:
  // Evénements hérités (sauf OnIllegalChar, OnKey*)
  __property OnChange;
  __property OnClick;
  __property OnDblClick;
  __property OnDragDrop;
  __property OnDragOver;
  __property OnEndDrag;
  __property OnEnter;  /*// Lancé via CMEnter*/
  __property OnExit;   // Lancé via CMExit
  __property OnKeyDown;                          //Rajouté par DavidR pour programmation sale mais utile
  __property OnMouseDown;
  __property OnMouseMove;
  __property OnMouseUp;
  __property OnStartDrag;

 public:
  void __fastcall operator+=( const Currency& curVal);
  void __fastcall operator-=( const Currency& curVal);

 protected:
  // Déclaration des messages
  void __fastcall CMExit( Controls::TCMExit& Msg);

  // Déroutement des messages
  BEGIN_MESSAGE_MAP
   MESSAGE_HANDLER( CM_EXIT,  TCMExit,  CMExit)
  END_MESSAGE_MAP( inherited)

 private:
  typedef CCustomEdit inherited;

 public:
 	static int iNbDecimales;

 public:
  __fastcall          CEditMontant( TComponent* pOwner);
  __fastcall virtual ~CEditMontant( void)              {};
  virtual bool __fastcall EstCorrectementRempliDefault( void);
  double __fastcall ToDouble()
    {
      if (Text.IsEmpty())
        return D_NS;
      return Montant;
    }
}; /* class CEditMontant */
} // namespace Ceditmon */



#ifndef NO_IMPLICIT_NAMESPACE_USE
 using namespace Ceditmon;
#endif

#endif

